package com.hxzy.shop.commodity.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.hxzy.shop.commodity.dto.DrugExportDto;
import com.hxzy.shop.commodity.dto.ExportDrugDto;
import com.hxzy.shop.commodity.dto.req.*;
import com.hxzy.shop.commodity.dto.resp.*;
import com.hxzy.shop.entity.Drug;
import com.hxzy.shop.entity.StoreImportRecord;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * @author by zhy
 * @date 2021-07-07 10:11
 * @Version 1.0
 */
public interface DrugService extends IService<Drug> {
    /**
     * 添加药品
     *
     * @param addDrugReq
     * @return
     */
    boolean addDrug(AddDrugReq addDrugReq);

    /**
     * Excel导入添加药品
     *
     * @param addDrugReq
     * @return
     */
    //boolean excelimportDrug(AddDrugReq addDrugReq);

    /**
     * 获得药品分页
     *
     * @param drugPageReq 药品请求model
     * @return 返回药品列表
     */
    PageInfo<Drug> getDrugPage(DrugPageReq drugPageReq);

    /**
     * 获得药品详细
     *
     * @param req 药品id
     * @return 药品详细
     */
    DrugResp getOneDrug(DrugInfoReq req);

    /**
     * 更新状态
     *
     * @param state 更新状态
     * @return 是否成功
     */
    boolean updateState(DrugUpdateReq state);
//
//    /*检查药品是够可以修改状态*/
//    public boolean checkDrugNew(String drugId);
    /**
     * 根据id删除
     *
     * @param id 删除的id
     * @return 是否成功
     */
    @Transactional(rollbackFor = Exception.class)
    boolean deleteDrug(List<Long> id);


    /**
     * 子门店修改库存
     * @author qy
     * @date 2021/8/4
     * @description
     * @param stock
     * @return boolean
     **/
    boolean updateStock(DrugUpdateReq stock);

    /**
     * 门店获取药品列表
     * @param drugPageReq
     * @return
     */
    //PageInfo<DrugListResp> getDrugPageList(DrugPageReq drugPageReq);

    /**
     * 批量导入药品
     * @param file
     * @return
     */
    //ImportDrugResp importDrug(MultipartFile file);

    /**
     * 获取营销药品列表
     * @param drugPageReq
     * @return
     */
    PageInfo<MarketingDrugListResp> getPrecinctDrug(DrugPageReq drugPageReq);

    //boolean batchUpdateStock(BatchUpdateStockReq req);

    /**
     * 条形码导入修改商品库存
     **/
    //Map<String, Object> inventoryImport(MultipartFile file, Long storeId);


    /**
     * 在指定barCode集合中查询已有的药品
     * @param drugCodeList
     * @return
     */
    //List<Drug> getExitDrug(List<String> drugCodeList);


    /**
     * 批量上下架
     */
    boolean updateBatchState(EditClassifyDto dto);

    /**
     * 批量修改分类
     */
    boolean updateClassify(EditClassifyDto dto);

    //StoreImportRecord getStoreImportRecord(Long storeImportRecordId);

    /**
     * 导出商品
     */
    //List<DrugExportDto> exportDrug(ExportDrugDto dto);

    /**
     * 新 导入药品 importDrug
     * */
    //ImportDrugResp importDrugNew(MultipartFile file);

    /**
     * 新增药品
    * */
    Boolean addDrug(List<DrugImportExcelResp> successList);


    /**
     * 根据分类id获得药品分页
     * */
    PageInfo<Drug> getDrugPageByClassification(ClassificationDrugPageReq req);

    /**
    批量修改导入
    * */
    ImportDrugResp batchEditDrugDetail(MultipartFile file);

    /**批量修改*/
    //boolean batchEditDrug (BatchEditDrugReq req);

    /**检查药品能否上下架**/
    //boolean checkDrugState(Drug drug);

    //Boolean improtImg(MultipartFile file);


    //PageInfo<DrugActivityResp> getDrugList(ActivityBaseReq req);
}
